
<!DOCTYPE html>
<html lang="zh-cn">
    
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="generator" content="ML3426&#39;s Lair">
    <title>Java9 Modularity - Chapter 1 笔记-模块化概述 - ML3426&#39;s Lair</title>
    <meta name="author" content="ML3426">
    
    
    
    <script type="application/ld+json">{"@context":"http://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"ML3426","sameAs":["https://github.com/ML3426","https://weibo.com/ML3426"],"image":"http://oin1tuauu.bkt.clouddn.com/avatar.jpg"},"articleBody":"对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。\n什么是模块化模块化(modularization)是指将系统分解成独立且相互连接的模块的行为。模块(module)是包含代码的可识别工件，使用了元数据(metadata)来描述模块及其他模块的关系。\n模块的核心原则1. 强封装性模块必须在可公开使用的代码和被内部实现细节的代码之间划定清晰的界限。内部实现细节的代码无法被外部模块使用，因此就可以在不影响模块用户的情况下自由对封装代码进行修改。【类似于Interface-Implement的模式，但是Implement不可被外部使用】\n2. 定义良好的接口没有封装的任何代码都有可能被外部模块公用，因此模块应该向其他模块公开定义良好且稳定的接口。\n3. 显式依赖模块对于别的模块的依赖关系必须作为模块定义的一部分，从而可以产生模块图，对于模块的可靠配置提供基础。【类似于Maven的pom.xml】\n在Java9之前在Java9之前，Java中其实已经为了大型应用的构建有了一些模块化的特征，例如：\n强封装性Java中的包(package)和访问修饰符已经具有了类似的特征，例如我们可以定义方法是_private_的或者类是包可见级别的访问修饰符，从而对外部隐藏具体的实现，实现一定程度的强封装性，但是这样的封装维度太小，最多只能到类或者包级别。\n定义良好的接口对于接口部分，Java一开始就提供了良好的支持，即Java中的_interface_关键字，可以使用_interface_定义好接口，然后将实现类隐藏起来，通过依赖注入的方式完成方法的使用。\n显式依赖虽然Java使用了显式的_import_语句，但是由于这些导入是编译时结构，因此当代码打包后，就无法确定哪一些Jar包含当前Jar运行所需要的类型。\n将Jar作为模块？在Java9之前，看起来Jar包是最类似于模块的东西，但是他有几个比较致命的弱点。\n没有依赖关系信息`sh\njava -classpath lib/guava-19.0jar:\\lib/*****.jar \\ -jar MyApplication.jar    `\n类路径地狱（Jar地狱）相关链接：JAR Hell(https://www.javacodegeeks.com/2015/10/jar-hell.html)也就是我们经常说的：包冲突\nJava9 模块带来的好处\n可靠的配置\n强封装性\n可扩展开发\n安全性\n优化\n\n","dateCreated":"2018-07-12T02:31:41+08:00","dateModified":"2018-07-29T05:57:50+08:00","datePublished":"2018-07-12T02:31:41+08:00","description":"对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。","headline":"Java9 Modularity - Chapter 1 笔记-模块化概述","image":["http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale140"],"mainEntityOfPage":{"@type":"WebPage","@id":"http://ml3426.oschina.io/Study/java9-modularity-study-0.html"},"publisher":{"@type":"Organization","name":"ML3426","sameAs":["https://github.com/ML3426","https://weibo.com/ML3426"],"image":"http://oin1tuauu.bkt.clouddn.com/avatar.jpg","logo":{"@type":"ImageObject","url":"http://oin1tuauu.bkt.clouddn.com/avatar.jpg"}},"url":"http://ml3426.oschina.io/Study/java9-modularity-study-0.html","keywords":"Java, Java Modularity","thumbnailUrl":"http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale140"}</script>
    <meta name="description" content="对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。">
<meta name="keywords" content="Java,Java Modularity">
<meta property="og:type" content="blog">
<meta property="og:title" content="Java9 Modularity - Chapter 1 笔记-模块化概述">
<meta property="og:url" content="http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
<meta property="og:site_name" content="ML3426&#39;s Lair">
<meta property="og:description" content="对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。">
<meta property="og:locale" content="zh-cn">
<meta property="og:updated_time" content="2018-07-28T21:57:50.795Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Java9 Modularity - Chapter 1 笔记-模块化概述">
<meta name="twitter:description" content="对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。">
    
    
        
    
    
        <meta property="og:image" content="http://oin1tuauu.bkt.clouddn.com/avatar.jpg"/>
    
    
        <meta property="og:image" content="http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale140"/>
        <meta class="swiftype" name="image" data-type="enum" content="http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale140" />
    
    
    
    <!--STYLES-->
    <link rel="stylesheet" href="/assets/css/style-3frockyt2j28isvdztjchy5nhkz8tjki9ermufc1ckptmvjdftux94m2ahub.min.css">
    <!--STYLES END-->
    

    
    <script type="text/javascript">
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "//hm.baidu.com/hm.js?7a67e9c867634890c1425150399ba634";
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(hm, s);
    })();
    </script>

    <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
</head>

    <body>
        <div id="blog">
            <!-- Define author's picture -->


<header id="header" data-behavior="5">
    <i id="btn-open-sidebar" class="fa fa-lg fa-bars"></i>
    <div class="header-title">
        <a class="header-title-link" href="/ ">ML3426&#39;s Lair</a>
    </div>
    
        
            <a  class="header-right-icon "
                href="#about">
        
        
            <i class="fa fa-lg fa-http://oin1tuauu.bkt.clouddn.com/avatar.jpg"></i>
        
        </a>
    
</header>

            <!-- Define author's picture -->



        
    

<nav id="sidebar" data-behavior="5">
    <div class="sidebar-container">
        
            <div class="sidebar-profile">
                <a href="/#about">
                    <img class="sidebar-profile-picture" src="http://oin1tuauu.bkt.clouddn.com/avatar.jpg" alt="作者的图片"/>
                </a>
                <h4 class="sidebar-profile-name">ML3426</h4>
                
                    <h5 class="sidebar-profile-bio"><p>author.bio</p>
</h5>
                
            </div>
        
        
            <ul class="sidebar-buttons">
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="/ "
                            
                            title="首页"
                        >
                    
                        <i class="sidebar-button-icon fa fa-home" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">首页</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="/all-categories"
                            
                            title="分类"
                        >
                    
                        <i class="sidebar-button-icon fa fa-bookmark" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">分类</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="/all-tags"
                            
                            title="标签"
                        >
                    
                        <i class="sidebar-button-icon fa fa-tags" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">标签</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="/all-archives"
                            
                            title="归档"
                        >
                    
                        <i class="sidebar-button-icon fa fa-archive" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">归档</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link open-algolia-search"
                             href="#search"
                            
                            title="搜索"
                        >
                    
                        <i class="sidebar-button-icon fa fa-search" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">搜索</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="#about"
                            
                            title="关于"
                        >
                    
                        <i class="sidebar-button-icon fa fa-question" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">关于</span>
                    </a>
            </li>
            
        </ul>
        
            <ul class="sidebar-buttons">
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link " href="https://github.com/ML3426" target="_blank" rel="noopener" title="同性社区">
                    
                        <i class="sidebar-button-icon fab fa-github" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">同性社区</span>
                    </a>
            </li>
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link " href="https://weibo.com/ML3426" target="_blank" rel="noopener" title="微博">
                    
                        <i class="sidebar-button-icon fab fa-weibo" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">微博</span>
                    </a>
            </li>
            
        </ul>
        
            <ul class="sidebar-buttons">
            
                <li class="sidebar-button">
                    
                        <a  class="sidebar-button-link "
                             href="/atom.xml"
                            
                            title="RSS"
                        >
                    
                        <i class="sidebar-button-icon fa fa-rss" aria-hidden="true"></i>
                        <span class="sidebar-button-desc">RSS</span>
                    </a>
            </li>
            
        </ul>
        
    </div>
</nav>

            
            <div id="main" data-behavior="5"
                 class="
                        hasCoverMetaIn
                        ">
                
<article class="post">
    
    
        <div class="post-header main-content-wrap text-center">
    
        <h1 class="post-title">
            Java9 Modularity - Chapter 1 笔记-模块化概述
        </h1>
    
    
        <div class="post-meta">
    <time datetime="2018-07-12T02:31:41+08:00">
	
		    7月 12, 2018
    	
    </time>
    
        <span>发布在 </span>
        
    <a class="category-link" href="/categories/Study/">Study</a>


    
</div>

    
</div>

    
    <div class="post-content markdown">
        <div class="main-content-wrap">
            <p>对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。<br><a id="more"></a></p>
<h2 id="什么是模块化"><a href="#什么是模块化" class="headerlink" title="什么是模块化"></a>什么是模块化</h2><p>模块化(<em>modularization</em>)是指将系统分解成独立且相互连接的模块的行为。<br>模块(<em>module</em>)是包含代码的可识别工件，使用了元数据(<em>metadata</em>)来描述模块及其他模块的关系。</p>
<h2 id="模块的核心原则"><a href="#模块的核心原则" class="headerlink" title="模块的核心原则"></a>模块的核心原则</h2><h3 id="1-强封装性"><a href="#1-强封装性" class="headerlink" title="1. 强封装性"></a>1. 强封装性</h3><p>模块必须在可公开使用的代码和被内部实现细节的代码之间划定清晰的界限。内部实现细节的代码无法被外部模块使用，因此就可以在不影响模块用户的情况下自由对封装代码进行修改。【类似于Interface-Implement的模式，但是Implement不可被外部使用】</p>
<h3 id="2-定义良好的接口"><a href="#2-定义良好的接口" class="headerlink" title="2. 定义良好的接口"></a>2. 定义良好的接口</h3><p>没有封装的任何代码都有可能被外部模块公用，因此模块应该向其他模块公开定义良好且稳定的接口。</p>
<h3 id="3-显式依赖"><a href="#3-显式依赖" class="headerlink" title="3. 显式依赖"></a>3. 显式依赖</h3><p>模块对于别的模块的依赖关系必须作为模块定义的一部分，从而可以产生模块图，对于模块的可靠配置提供基础。【类似于Maven的pom.xml】</p>
<h2 id="在Java9之前"><a href="#在Java9之前" class="headerlink" title="在Java9之前"></a>在Java9之前</h2><p>在Java9之前，Java中其实已经为了大型应用的构建有了一些模块化的特征，例如：</p>
<h3 id="强封装性"><a href="#强封装性" class="headerlink" title="强封装性"></a>强封装性</h3><p>Java中的包(<em>package</em>)和访问修饰符已经具有了类似的特征，例如我们可以定义方法是_private_的或者类是包可见级别的访问修饰符，从而对外部隐藏具体的实现，实现一定程度的强封装性，但是这样的封装维度太小，最多只能到类或者包级别。</p>
<h3 id="定义良好的接口"><a href="#定义良好的接口" class="headerlink" title="定义良好的接口"></a>定义良好的接口</h3><p>对于接口部分，Java一开始就提供了良好的支持，即Java中的_interface_关键字，可以使用_interface_定义好接口，然后将实现类隐藏起来，通过依赖注入的方式完成方法的使用。</p>
<h3 id="显式依赖"><a href="#显式依赖" class="headerlink" title="显式依赖"></a>显式依赖</h3><p>虽然Java使用了显式的_import_语句，但是由于这些导入是编译时结构，因此当代码打包后，就无法确定哪一些Jar包含当前Jar运行所需要的类型。</p>
<h3 id="将Jar作为模块？"><a href="#将Jar作为模块？" class="headerlink" title="将Jar作为模块？"></a>将Jar作为模块？</h3><p>在Java9之前，看起来Jar包是最类似于模块的东西，但是他有几个比较致命的弱点。</p>
<h4 id="没有依赖关系信息"><a href="#没有依赖关系信息" class="headerlink" title="没有依赖关系信息"></a>没有依赖关系信息</h4><pre><code>`sh
</code></pre><p>java -classpath lib/guava-19.0jar:\<br>lib/*****.jar \<br> -jar MyApplication.jar<br>    `</p>
<h4 id="类路径地狱（Jar地狱）"><a href="#类路径地狱（Jar地狱）" class="headerlink" title="类路径地狱（Jar地狱）"></a>类路径地狱（Jar地狱）</h4><p>相关链接：<a href="">JAR Hell</a>(<a href="https://www.javacodegeeks.com/2015/10/jar-hell.html" target="_blank" rel="noopener">https://www.javacodegeeks.com/2015/10/jar-hell.html</a>)<br>也就是我们经常说的：包冲突</p>
<h2 id="Java9-模块带来的好处"><a href="#Java9-模块带来的好处" class="headerlink" title="Java9 模块带来的好处"></a>Java9 模块带来的好处</h2><ol>
<li>可靠的配置</li>
<li>强封装性</li>
<li>可扩展开发</li>
<li>安全性</li>
<li>优化</li>
</ol>

            

        </div>
    </div>
    <div id="post-footer" class="post-footer main-content-wrap">
        
            <div class="post-footer-tags">
                <span class="text-color-light text-small">标签</span><br/>
                
    <a class="tag tag--primary tag--small t-link" href="/tags/Java/">Java</a> <a class="tag tag--primary tag--small t-link" href="/tags/Java-Modularity/">Java Modularity</a>

            </div>
        
        
            <div class="post-actions-wrap">
    <nav>
        <ul class="post-actions post-action-nav">
            <li class="post-action">
                
                    
                    <a class="post-action-btn btn btn--default tooltip--top" href="/Study/java9-modularity-study-1.html" data-tooltip="Java9 Modularity - Chapter 2 笔记-模块和模块化JDK" aria-label="上一篇: Java9 Modularity - Chapter 2 笔记-模块和模块化JDK">
                
                    <i class="fa fa-angle-left" aria-hidden="true"></i>
                    <span class="hide-xs hide-sm text-small icon-ml">上一篇</span>
                </a>
            </li>
            <li class="post-action">
                
                    
                    <a class="post-action-btn btn btn--default tooltip--top" href="/Study/java-asm-study-1.html" data-tooltip="ASM学习笔记1 - JNI字段描述符" aria-label="下一篇: ASM学习笔记1 - JNI字段描述符">
                
                    <span class="hide-xs hide-sm text-small icon-mr">下一篇</span>
                    <i class="fa fa-angle-right" aria-hidden="true"></i>
                </a>
            </li>
        </ul>
    </nav>
    <ul class="post-actions post-action-share">
        <li class="post-action hide-lg hide-md hide-sm">
            <a class="post-action-btn btn btn--default btn-open-shareoptions" href="#btn-open-shareoptions" aria-label="Diesen Beitrag teilen">
                <i class="fa fa-share-alt" aria-hidden="true"></i>
            </a>
        </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://www.facebook.com/sharer/sharer.php?u=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Facebook">
                    <i class="fa fa-facebook-official" aria-hidden="true"></i>
                </a>
            </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://twitter.com/intent/tweet?text=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Twitter">
                    <i class="fa fa-twitter" aria-hidden="true"></i>
                </a>
            </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://plus.google.com/share?url=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Google+">
                    <i class="fa fa-google-plus" aria-hidden="true"></i>
                </a>
            </li>
        
        
            
                <li class="post-action">
                    <a class="post-action-btn btn btn--default" href="#gitment">
                         <i class="fa fa-comment-o"></i>
                    </a>
                </li>
            
        
        <li class="post-action">
            
                <a class="post-action-btn btn btn--default" href="#" aria-label="Nach oben">
            
                <i class="fa fa-list" aria-hidden="true"></i>
            </a>
        </li>
    </ul>
</div>


        
        
            
                <div id="gitment"></div>
            
        
    </div>
</article>



                <footer id="footer" class="main-content-wrap">
	<span id="busuanzi_container_site_uv">本站访客数<span id="busuanzi_value_site_uv"></span>次</span>
	<br/>
    <span class="copyrights">
        Copyrights &copy; 2018 ML3426. All Rights Reserved.
    </span>
</footer>

            </div>
            
                <div id="bottom-bar" class="post-bottom-bar" data-behavior="5">
                    <div class="post-actions-wrap">
    <nav>
        <ul class="post-actions post-action-nav">
            <li class="post-action">
                
                    
                    <a class="post-action-btn btn btn--default tooltip--top" href="/Study/java9-modularity-study-1.html" data-tooltip="Java9 Modularity - Chapter 2 笔记-模块和模块化JDK" aria-label="上一篇: Java9 Modularity - Chapter 2 笔记-模块和模块化JDK">
                
                    <i class="fa fa-angle-left" aria-hidden="true"></i>
                    <span class="hide-xs hide-sm text-small icon-ml">上一篇</span>
                </a>
            </li>
            <li class="post-action">
                
                    
                    <a class="post-action-btn btn btn--default tooltip--top" href="/Study/java-asm-study-1.html" data-tooltip="ASM学习笔记1 - JNI字段描述符" aria-label="下一篇: ASM学习笔记1 - JNI字段描述符">
                
                    <span class="hide-xs hide-sm text-small icon-mr">下一篇</span>
                    <i class="fa fa-angle-right" aria-hidden="true"></i>
                </a>
            </li>
        </ul>
    </nav>
    <ul class="post-actions post-action-share">
        <li class="post-action hide-lg hide-md hide-sm">
            <a class="post-action-btn btn btn--default btn-open-shareoptions" href="#btn-open-shareoptions" aria-label="Diesen Beitrag teilen">
                <i class="fa fa-share-alt" aria-hidden="true"></i>
            </a>
        </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://www.facebook.com/sharer/sharer.php?u=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Facebook">
                    <i class="fa fa-facebook-official" aria-hidden="true"></i>
                </a>
            </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://twitter.com/intent/tweet?text=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Twitter">
                    <i class="fa fa-twitter" aria-hidden="true"></i>
                </a>
            </li>
        
            
            
            <li class="post-action hide-xs">
                <a class="post-action-btn btn btn--default" target="new" href="https://plus.google.com/share?url=http://ml3426.oschina.io/Study/java9-modularity-study-0.html" title="分享到 Google+">
                    <i class="fa fa-google-plus" aria-hidden="true"></i>
                </a>
            </li>
        
        
            
                <li class="post-action">
                    <a class="post-action-btn btn btn--default" href="#gitment">
                         <i class="fa fa-comment-o"></i>
                    </a>
                </li>
            
        
        <li class="post-action">
            
                <a class="post-action-btn btn btn--default" href="#" aria-label="Nach oben">
            
                <i class="fa fa-list" aria-hidden="true"></i>
            </a>
        </li>
    </ul>
</div>


                </div>
                <div id="share-options-bar" class="share-options-bar" data-behavior="5">
    <i id="btn-close-shareoptions" class="fa fa-close"></i>
    <ul class="share-options">
        
            
            
            <li class="share-option">
                <a class="share-option-btn" target="new" href="https://www.facebook.com/sharer/sharer.php?u=http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
                    <i class="fa fa-facebook-official" aria-hidden="true"></i><span>分享到 Facebook</span>
                </a>
            </li>
        
            
            
            <li class="share-option">
                <a class="share-option-btn" target="new" href="https://twitter.com/intent/tweet?text=http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
                    <i class="fa fa-twitter" aria-hidden="true"></i><span>分享到 Twitter</span>
                </a>
            </li>
        
            
            
            <li class="share-option">
                <a class="share-option-btn" target="new" href="https://plus.google.com/share?url=http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
                    <i class="fa fa-google-plus" aria-hidden="true"></i><span>分享到 Google+</span>
                </a>
            </li>
        
    </ul>
</div>

            
        </div>
        


    
        
    

<div id="about">
    <div id="about-card">
        <div id="about-btn-close">
            <i class="fa fa-remove"></i>
        </div>
        
            <img id="about-card-picture" src="http://oin1tuauu.bkt.clouddn.com/avatar.jpg" alt="作者的图片"/>
        
            <h4 id="about-card-name">ML3426</h4>
        
            <div id="about-card-bio"><p>author.bio</p>
</div>
        
        
            <div id="about-card-job">
                <i class="fa fa-briefcase"></i>
                <br/>
                <p>author.job</p>

            </div>
        
        
            <div id="about-card-location">
                <i class="fa fa-map-marker"></i>
                <br/>
                浙江杭州
            </div>
        
    </div>
</div>

        
            <div id="algolia-search-modal" class="modal-container">
    <div class="modal">
        <div class="modal-header">
            <span class="close-button"><i class="fa fa-close"></i></span>
            <a href="https://algolia.com" target="_blank" rel="noopener" class="searchby-algolia text-color-light link-unstyled">
                <span class="searchby-algolia-text text-color-light text-small">by</span>
                <img class="searchby-algolia-logo" src="https://www.algolia.com/static_assets/images/press/downloads/algolia-light.svg">
            </a>
            <i class="search-icon fa fa-search"></i>
            <form id="algolia-search-form">
                <input type="text" id="algolia-search-input" name="search"
                    class="form-control input--large search-input" placeholder="Search "
                    />
            </form>
        </div>
        <div class="modal-body">
            <div class="no-result text-color-light text-center">没有找到文章</div>
            <div class="results">
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Essay/from2016to2017.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/image/jpg/6763119437_5b978e75a7_o.jpg-scale140" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Essay/from2016to2017.html">
                            <h3 class="media-heading">我的2016，我的2017</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2017年1月12日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>随着舷窗外的空气由纯白色变成了淡淡的土黄色，飞机降落到了长沙黄花机场的跑道上，正式宣告着我的实习生活正式结束了，也宣告着我的2016年生活划上了一个句点。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Essay/jobhunt-exp.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/image/jpg/jobhunt_exp_title.jpg-scale140" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Essay/jobhunt-exp.html">
                            <h3 class="media-heading">求职之路经验分享</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2017年4月7日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>到了大三、大四的时候，所有人都面临着大学生活即将结束，接下来该如何前进的抉择。关于这个问题，出路无非是工作，留学，读研，创业这么几种。由于我是工作党，这里就跟大家分享一下我自己的求职经验和感想。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java-asm-study-0.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/c10e3.jpg-scale140" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java-asm-study-0.html">
                            <h3 class="media-heading">ASM学习笔记0 - Hello World</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2018年7月12日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>最近在工作中，遇到了一个可能大部分Java开发人员都遇到过的痛点，试用了几种其他的工具类框架，发现都有不是很满意的地方，因此就有了一个主意来自己写一个。但是在我的预想中，做这个工具需要和CGLib以及ASM打交道比较多，所以就打算从ASM以及CGLib开始学起，但是要学ASM，先学好JVM和字节码是前提。一边学习我也会一边产出我自己的学习笔记希望能够帮助到更多的人。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java-asm-study-1.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/c10e3.jpg-scale140" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java-asm-study-1.html">
                            <h3 class="media-heading">ASM学习笔记1 - JNI字段描述符</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2018年7月12日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>在之前的笔记中，我们看到了一段根据一个Java的HelloWorld程序反编译出来的字节码，在字节码的comment部分，我们看到了一些诸如<strong>[Ljava/lang/String</strong>或者<strong>()V</strong>之类的代码段，这样的代码段看起来与一般的类全路径有点像，但也有些不同。这样的写法，叫做JNI字段描述符。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale140" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java9-modularity-study-0.html">
                            <h3 class="media-heading">Java9 Modularity - Chapter 1 笔记-模块化概述</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2018年7月12日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>对于一个大型系统，系统的复杂度可能会超过我们理解和有效开发的能力范围。如果应用缺乏结构性，可能在之后的开发运维过程中付出巨大的代价。而模块化，则是用来管理和减少这种复杂性的技术之一。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
                <div class="media">
                    
                    <div class="media-left">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java9-modularity-study-1.html">
                            <img class="media-image" src="http://oin1tuauu.bkt.clouddn.com/ek6c0.jpg-scale.title.wide" width="90" height="90"/>
                        </a>
                    </div>
                    
                    <div class="media-body">
                        <a class="link-unstyled" href="http://ml3426.oschina.io/Study/java9-modularity-study-1.html">
                            <h3 class="media-heading">Java9 Modularity - Chapter 2 笔记-模块和模块化JDK</h3>
                        </a>
                        <span class="media-meta">
                            <span class="media-date text-small">
                                
                                    2018年7月29日
                                
                            </span>
                        </span>
                        <div class="media-content hide-xs font-merryweather"><p>如图，目前在JDK9中定义了90多个平台模块（图中只画出了部分），JDK9就是由这90多个模块构成，而不是一个整体库。<br></div>
                    </div>
                    <div style="clear:both;"></div>
                    <hr>
                </div>
                
            </div>
        </div>
        <div class="modal-footer">
            <p class="results-count text-medium"
                data-message-zero="没有找到文章"
                data-message-one="找到 1 篇文章"
                data-message-other="找到 {n} 篇文章">
                找到 6 篇文章
            </p>
        </div>
    </div>
</div>

        
        
<div id="cover" style="background-image:url('/assets/images/cover.jpg');"></div>
        <!--SCRIPTS-->
<script src="/assets/js/script-xzfezjobyekpxrjktw5tz6muvzqfsbmo5n6atk3p5om9ulfptldi3p7cyqd8.min.js"></script>
<!--SCRIPTS END-->

    
        <script type="text/javascript">
            (function() {
                function render() {
                    new Gitment({
                        id: 'Thu Jul 12 2018 02:31:41 GMT+0800',
                        owner: 'FML3426',
                        repo: 'blog_gitcomment',
                        oauth: {
                            client_id: '0f00579407bcf3bb59ee',
                            client_secret: '491d910dd9e560666051f860569f53f1a737e3c9',
                        }
                    }).render('gitment');
                }
                var gc = document.createElement('script');
                gc.type = 'text/javascript';
                gc.src = '//imsun.github.io/gitment/dist/gitment.browser.js';
                gc.charset = 'UTF-8';
                gc.onload = render;
                gc.async = true;
                document.querySelector('body').appendChild(gc);
                var gcs = document.createElement('link');
                gcs.href = '//imsun.github.io/gitment/style/default.css';
                gcs.type = 'text/css';
                gcs.rel = 'stylesheet';
                gcs.media = 'screen,print';
                document.querySelector('head').appendChild(gcs);
            })();
	    </script>
    


    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment-with-locales.min.js"></script>
    <script src="//cdn.jsdelivr.net/algoliasearch/3/algoliasearch.min.js"></script>
    <script>
        var algoliaClient = algoliasearch('8QTBISJQTD', 'e228775761b8c86b2158a77831bc74f5');
        var algoliaIndex = algoliaClient.initIndex('osc_blog_index');
    </script>


    </body>
</html>
